var e = require;
var t = module;
var n = exports;
Object.defineProperty(n, "__esModule", {value: !0}), (n.TypedEvent = void 0);
(o.prototype.clear = function () {
    (this.listeners = []), (this.listenersOnce = []);
}),
    (t = o);
function o() {
    var n = this;
    (this.listeners = []),
        (this.listenersOnce = []),
        (this.on = function (e) {
            return (
                n.listeners.push(e),
                function () {
                    return n.off(e);
                }
            );
        }),
        (this.once = function (e) {
            return (
                n.listenersOnce.push(e),
                function () {
                    return n.off(e);
                }
            );
        }),
        (this.off = function (e) {
            var t = n.listeners.indexOf(e);
            -1 < t && n.listeners.splice(t, 1), -1 < (t = n.listenersOnce.indexOf(e)) && n.listenersOnce.splice(t, 1);
        }),
        (this.emit = function (t) {
            n.listeners.forEach(function (e) {
                return e(t);
            }),
                n.listenersOnce.forEach(function (e) {
                    return e(t);
                }),
                (n.listenersOnce = []);
        }),
        (this.pipe = function (t) {
            return n.on(function (e) {
                return t.emit(e);
            });
        });
}
n.TypedEvent = t;
